package com.happy016.aop;

/**
 * 阅读Spring-aop源码,Advice相关
 *
 * @author Linyb
 * @since 2017/11/8 16:53
 */
public class Advice_ {

    // Advice(通知):定义在连接点做什么,为切面增强提供织入接口.
    // Spring AOP中,主要用来围绕方法调用而注入切面行为.

    /*
     *     Advice
     *       |
     *       | <--BeforeAdvice  前置增强接口
     *       |
     *       | <--AfterAdvice   后置增强接口
     *       |
     *       | <--ThrowAdvice   异常增强接口
     *
     *
     *   以BeforeAdvice下面的CountingBeforeAdvice为例子,来查看实现源码.
     *
     *   BeforeAdvice
     *       |
     *       | <-- MethodBeforeAdvice
     *                  |
     *                  | <-- CountingBeforeAdvice
     *
     *
     *   //该Advice主要是用来统计调用次数
     *   public class CountingBeforeAdvice extends MethodCounter implements MethodBeforeAdvice {
     *
     *      //实现MethodBeforeAdvice的before方法
	 *      @Override
	 *      public void before(Method m, Object[] args, Object target) throws Throwable {
     *		    //以method方法为参数,进行统计,count(m)方法,在MethodCounter中统一实现
     *		    count(m);
	 *      }
     *   }
     *   //查看源码结构可以看到 AfterAdvice,ThrowAdvice里面都有CountingXXXAdvice这东西,
     *   //其实现方式都一样,都是进行统计,只是统计的回调点不一样,before after throw
     */
}
